package pl.wroc.pwr.mss.server.ui.menu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenuItem;

import pl.wroc.pwr.mss.server.service.SongService;
import pl.wroc.pwr.mss.server.ui.tables.JSongEditTable;
import pl.wroc.pwr.mss.server.ui.tables.models.SongEditTableModel;

/**
 * Pozycja w menu rozwijalnym sluzaca do usuwania zaznaczonych utworow z
 * playlisty. Utwory zaznaczane sa na tabeli utworow widocznej w oknie
 * dialogowym edycji playlisty.
 * 
 * @author mjagus
 */
public class JRemoveSelectedSongsMenuItem extends JMenuItem implements ActionListener
{
    /**
     * Identyfikator klasy.
     */
    private static final long serialVersionUID = 5239164253505773673L;

    /**
     * Tabela utworow zlokalizowana w oknie dialogowym edycji playlisty.
     */
    private JSongEditTable songEditTable;

    /**
     * Serwis dla encji Song.
     */
    private SongService songService;

    /**
     * Iniciuje komponent.
     */
    public JRemoveSelectedSongsMenuItem()
    {
        super("Remove selected");

        super.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e)
    {
        songEditTable.getPlaylist().getSongs().removeAll(songEditTable.getSelectedSongs());
        ((SongEditTableModel)songEditTable.getModel()).fireTableDataChanged();
    }

    /**
     * @return Tabela utworow zlokalizowana w oknie dialogowym edycji playlisty
     */
    public JSongEditTable getSongEditTable()
    {
        return songEditTable;
    }

    /**
     * @param songEditTable Tabela utworow zlokalizowana w oknie dialogowym
     * edycji playlisty
     */
    public void setSongEditTable(JSongEditTable songEditTable)
    {
        this.songEditTable = songEditTable;
    }

    /**
     * @return Serwis dla encji Song
     */
    public SongService getSongService()
    {
        return songService;
    }

    /**
     * @param songService Serwis dla encji Song
     */
    public void setSongService(SongService songService)
    {
        this.songService = songService;
    }
}
